package jmine.tec.script;

import java.util.Map;

/**
 * A {@link ScriptExecutionContext} that can be decomposed
 * 
 * @author takeshi
 * @param <R>
 */
public interface DecomposableScriptExecutionContext<R> extends ScriptExecutionContext<R> {

    /**
     * @return the main {@link ScriptDefinition}
     */
    ScriptDefinition getScriptDefinition();

    /**
     * @return the {@link ScriptDefinition} for the initializer script
     */
    ScriptDefinition getInitializerScriptDefinition();

    /**
     * @return the parameter types of the script
     */
    Map<String, Class<?>> getScriptParameterTypes();

}
